package 第一周;

/**
 * @author xhw
 * @date 2024/2/19
 */

public class 有效的字母异位词 {
    //题目要求给定两个字符串 s 和 t ，编写一个函数来判断 t 是否是 s 的字母异位词。
    //注意：若 s 和 t 中每个字符出现的次数都相同，则称 s 和 t 互为字母异位词。

    //示例 1:

    //输入: s = "anagram", t = "nagaram"
    //输出: true
    //示例 2:
    //
    //输入: s = "rat", t = "car"
    //输出: false

    //提示:
    //
    //1 <= s.length, t.length <= 5 * 104
    //s 和 t 仅包含小写字母
    //
    public static void main(String[] args) {
        String s = "anagram";
        String t = "nagaram";

        String s1 = "anagrama";
        String t1 = "nagaramb";

        System.out.println(isAnagram(s, t));
        System.out.println(isAnagram(s1, t1));
    }

    private static boolean isAnagram(String s, String t) {
        //如果长度不一样，直接返回false
        if (s.length() != t.length()) {
            return false;
        }

        //定义一个数组，用来存储26个字母出现的次数
        int[] counter = new int[26];
        for (int i = 0; i < s.length(); i++) {
            //s中的字母出现次数+1
            counter[s.charAt(i) - 'a']++;
            //t中的字母出现次数-1
            counter[t.charAt(i) - 'a']--;
        }
        //两两抵消，如果最后数组中的元素都是0，说明两个字符串是字母异位词
        for (int i : counter) {
            if (i != 0) {
                return false;
            }
        }
        //如果数组中的元素都是0，返回true
        return true;

    }
}
